<?php


/*
    计算夺宝码表
*/
function content_get_codes_table()
{
    $db = System::load_sys_class('model');
    $num = $db->GetOne("SELECT * from `@#_caches` where `key` = 'shopcodes_table' LIMIT 1");
    $table = 'shopcodes_'.$num['value'];
    $shopcodes_table = $db->GetOne("SHOW TABLE STATUS LIKE '@#_$table'");

    if (!$shopcodes_table || !$num) {
        return false;
    }
    if ($shopcodes_table['Auto_increment'] >= 99999) {
        $num = intval($num['value']) + 1;
        $shopcodes_table = 'shopcodes_'.$num;
        $q1 = $db->Query("		
				CREATE TABLE `@#_$shopcodes_table` (
				  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
				  `s_id` int(10) unsigned NOT NULL,
				  `s_cid` smallint(5) unsigned NOT NULL,
				  `s_len` smallint(5) DEFAULT NULL,
				  `s_codes` text,
				  `s_codes_tmp` text,
				  PRIMARY KEY (`id`),
				  KEY `s_id` (`s_id`),
				  KEY `s_cid` (`s_cid`),
				  KEY `s_len` (`s_len`)
				) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
		");
        $q2 = $db->Query("UPDATE `@#_caches` SET `value` = '$num' where `key` = 'shopcodes_table'");
        if (!$q1 || !$q2) {
            return false;
        }
    } else {
        $num = intval($num['value']);
        $shopcodes_table = 'shopcodes_'.$num;
    }

    return $shopcodes_table;
}

/*
   生成夺宝码 
   CountNum @ 生成个数
   len 	    @ 生成长度
   sid	    @ 商品ID
*/
function content_get_go_codes($CountNum = null, $len = null, $sid = null)
{
    $db = System::load_sys_class('model');
    //$db->Query("set global max_allowed_packet = 2*1024*1024*10");
    $table = $db->GetOne("SELECT * from `@#_caches` where `key` = 'shopcodes_table' LIMIT 1");
    $table = '@#_shopcodes_'.$table['value'];

    $num = ceil($CountNum / $len);
    $code_i = $CountNum;
    if ($num == 1) {
        $codes = array();
        for ($i = 1;$i <= $CountNum;++$i) {
            $codes[$i] = 10000000 + $i;
        }
        shuffle($codes);
        $codes = serialize($codes);
        $query = $db->Query("INSERT INTO `$table` (`s_id`, `s_cid`, `s_len`, `s_codes`,`s_codes_tmp`) VALUES ('$sid', '1','$CountNum','$codes','$codes')");
        unset($codes);

        return $query;
    }
    $query_1 = true;
    for ($k = 1;$k < $num;++$k) {
        $codes = array();
        for ($i = 1;$i <= $len;++$i) {
            $codes[$i] = 10000000 + $code_i;
            --$code_i;
        }
        shuffle($codes);
        $codes = serialize($codes);
        $query_1 = $db->Query("INSERT INTO `$table` (`s_id`, `s_cid`, `s_len`, `s_codes`,`s_codes_tmp`) VALUES ('$sid', '$k','$len','$codes','$codes')");
        unset($codes);
    }
    $CountNum = $CountNum - (($num - 1) * $len);
    $codes = array();
    for ($i = 1;$i <= $CountNum;++$i) {
        $codes[$i] = 10000000 + $code_i;
        --$code_i;
    }
    shuffle($codes);
    $codes = serialize($codes);
    $query_2 = $db->Query("INSERT INTO `$table` (`s_id`, `s_cid`,`s_len`, `s_codes`,`s_codes_tmp`) VALUES ('$sid', '$num','$CountNum','$codes','$codes')");
    unset($codes);

    return $query_1 && $query_2;
}

//content_get_go_codes(ceil($zongrenshu/3000),3000,$shopid);

/*
     添加推荐位
*/
function content_add_position()
{
}

/*
 新建一期商品
 info 	 商品的ID 或者 商品的数组
 使用此函数注意传进来的的商品期数不等于最大期数
*/
function content_add_shop_install($info = null)
{
    $db = System::load_sys_class('model');
    $db->Autocommit_start();

    unset($info['id']);
    unset($info['q_uid']);
    unset($info['q_user']);
    unset($info['q_user_code']);
    unset($info['q_content']);
    unset($info['q_counttime']);
    unset($info['q_end_time']);

    $info['xsjx_time'] = 0;
    $info['time'] = time();
    $info['qishu'] = intval($info['qishu']);
    ++$info['qishu'];
    $info['canyurenshu'] = '0';
    $info['shenyurenshu'] = $info['zongrenshu'];
    $info['codes_table'] = content_get_codes_table();
    $info['q_showtime'] = 'N';

    $keys = $vals = '(';
    foreach ($info as $key => $val) {
        $keys .= "`$key`,";
        $vals .= "'$val',";
    }
    $keys = rtrim($keys, ',');
    $vals = rtrim($vals, ',');
    $keys .= ')';
    $vals .= ')';

    $sql = 'INSERT INTO `@#_shoplist` '.$keys.' VALUES '.$vals;
    $q1 = $db->Query($sql);
    $id = $db->insert_id();
    $q2 = content_get_go_codes($info['zongrenshu'], 3000, $id);
    if ($q1 && $q2) {
        $db->Autocommit_commit();

        return true;
    } else {
        $db->Autocommit_rollback();

        return false;
    }
}//
;
